<?php

/**
 * tabelarni actions.
 *
 * @package    dnevnik
 * @subpackage tabelarni
 * @author     Your name here
 * @version    SVN: $Id: actions.class.php 12479 2008-10-31 10:54:40Z fabien $
 */
class tabelarniActions extends sfActions
{
 /**
  * Executes index action
  *
  * @param sfRequest $request A request object
  */
  public function executeIndex(sfWebRequest $request)
  {
  }

  public function executeBrUcenika(sfWebRequest $request)
  {
     $this->uceniks = DbFinder::from('Ucenik')->join('Profil')->select('Broj')->withColumn('count(Ucenik.Id)', 'Broj')->where('Ucenik.RazredId', $request->getParameter('razred_id'))->groupBy('Profil.Pol')->find();
  }

  public function executeCasovi(sfWebRequest $request)
  {
     $razred = DbFinder::from('Razred')->findPk($request->getParameter('razred_id'));
     $this->predmets = $razred->getPredmets(0, 1);
     unset($this->predmets[0]);
     $godina = explode('/' ,Functions::skolskaGodina());
     $cas_dbps = DbFinder::from('Cas')->select(array('PredmetId', 'Broj'))->withColumn('count(Cas.Id)', 'Broj')->where('RazredId', $razred->getId())->where('Datum', '<', $godina[1].'-1-1')->groupBy('PredmetId')->find();
     $cas_dbds = DbFinder::from('Cas')->select(array('PredmetId', 'Broj'))->withColumn('count(Cas.Id)', 'Broj')->where('RazredId', $razred->getId())->where('Datum', '>=', $godina[1].'-1-1')->groupBy('PredmetId')->find();
     $cas_ps = array();
     foreach($cas_dbps as $cas_dbp)
       $cas_ps[$cas_dbp['PredmetId']] = $cas_dbp['Broj'];
     $cas_ds = array();
     foreach($cas_dbds as $cas_dbd)
       $cas_ds[$cas_dbd['PredmetId']] = $cas_dbd['Broj'];

     $this->cas_ps = $cas_ps;
     $this->cas_ds = $cas_ds;
  }

  public function executeIzostanci(sfWebRequest $request)
  {
     $razred = DbFinder::from('Razred')->findPk($request->getParameter('razred_id'));
     $godina = explode('/' ,Functions::skolskaGodina());

     $this->uk_1 = DbFinder::from('Izostanak')->select('Id')->where('RazredId', $razred->getId())->where('Datum', '<', $godina[1].'-1-1')->groupBy('UcenikId')->count();
     $this->uk_2 = DbFinder::from('Izostanak')->select('Id')->where('RazredId', $razred->getId())->where('Datum', '>=', $godina[1].'-1-1')->groupBy('UcenikId')->count();
     $this->uk_uk_2 = DbFinder::from('Izostanak')->select('Id')->where('RazredId', $razred->getId())->groupBy('UcenikId')->count();

     $this->op_1 = DbFinder::from('Izostanak')->select('Id')->where('RazredId', $razred->getId())->where('Datum', '<', $godina[1].'-1-1')->where('Opravdan', 1)->groupBy('UcenikId')->count();
     $this->op_2 = DbFinder::from('Izostanak')->select('Id')->where('RazredId', $razred->getId())->where('Datum', '>=', $godina[1].'-1-1')->where('Opravdan', 1)->groupBy('UcenikId')->count();
     $this->op_uk_2 = DbFinder::from('Izostanak')->select('Id')->where('RazredId', $razred->getId())->where('Opravdan', 1)->groupBy('UcenikId')->count();

     $this->ne_1 = DbFinder::from('Izostanak')->select('Id')->where('RazredId', $razred->getId())->where('Datum', '<', $godina[1].'-1-1')->where('Opravdan', 0)->groupBy('UcenikId')->count();
     $this->ne_2 = DbFinder::from('Izostanak')->select('Id')->where('RazredId', $razred->getId())->where('Datum', '>=', $godina[1].'-1-1')->where('Opravdan', 0)->groupBy('UcenikId')->count();
     $this->ne_uk_2 = DbFinder::from('Izostanak')->select('Id')->where('RazredId', $razred->getId())->where('Opravdan', 0)->groupBy('UcenikId')->count();

     $this->uceniks = DbFinder::from('Ucenik')->where('Ucenik.RazredId', $razred->getId())->count();
  }

  public function executeVaspitneMere(sfWebRequest $request)
  {
  }

  public function executeVladanje(sfWebRequest $request)
  {
  }

  public function executePohvale(sfWebRequest $request)
  {
  }

  public function executeUspeh(sfWebRequest $request)
  {
     $razred = DbFinder::from('Razred')->findPk($request->getParameter('razred_id'));
     $this->predmets = $razred->getPredmets(0, 1);
     unset($this->predmets[0]);

     $zakljucnas = array();
     $zakljucna_dbs = DbFinder::from('Zakljucna')->select(array('PredmetId', 'Ocena', 'Period'))->where('RazredId', $razred->getId())->find();
     foreach($zakljucna_dbs as $zakljucna_db)
     {
        $zakljucnas[$zakljucna_db['PredmetId']][$zakljucna_db['Period']][] = $zakljucna_db['Ocena'];
     }

     $this->uceniks = DbFinder::from('Ucenik')->where('Ucenik.RazredId', $razred->getId())->count();
     $this->zakljucnas = $zakljucnas;
  }

  public function executePrvoPol(sfWebRequest $request)
  {
     $smer_naziv = DbFinder::from('Razred')->join('Smer')->select('Smer.Naziv', sfModelFinder::SIMPLE)->where('Razred.Id', $request->getParameter('razred_id'))->find();
     $ignore = Statistike::$ignore_predmeti[$smer_naziv[0]];
     $uceniks = DbFinder::from('Ucenik')->select('Id', sfModelFinder::SIMPLE)->where('RazredId', $request->getParameter('razred_id'))->find();
     $zakljucna_dbs = DbFinder::from('Zakljucna')->select(array('UcenikId', 'PredmetId', 'Ocena'))->where('UcenikId', 'in', $uceniks)->find();
     $zakljucnas = array();
     $proseks = array('neocenjen' => 0, '1kec' => 0, '2kec' => 0, '3kec' => 0, 'odlican' => 0, 'vrlodobar' => 0, 'dobar' => 0, 'dovoljan' => 0);
     foreach($zakljucna_dbs as $zakljucna_db)
       $zakljucnas[$zakljucna_db['UcenikId']][$zakljucna_db['PredmetId']] = $zakljucna_db['Ocena'];
     foreach($uceniks as $ucenik)
     {
        if(isset($zakljucnas[$ucenik]))
        {
           $pr_arr = Statistike::prosek($zakljucnas[$ucenik], $ignore);
           $proseks[$pr_arr[1]] ++;
        }

        else
        {
           $proseks['neocenjen'] ++;
        }
     }

     $this->proseks = $proseks;
     $this->uceniks = $uceniks;
  }

  public function executeDrugoPol(sfWebRequest $request)
  {
  }

  public function executeRazredniIspit(sfWebRequest $request)
  {
  }

  public function executeKrajGodine(sfWebRequest $request)
  {
  }

  public function executeTromesecje(sfWebRequest $request)
  {
     $stampa = new Stampa();
     $pdf = $stampa->tromesecje($request->getParameter('razred_id'));

     $this->getResponse()->setContentType('application/pdf');
     $this->getResponse()->setHttpHeader('Pragma', 'no-cache');
     $this->getResponse()->setHttpHeader('Cache-Control', 'no-store, no-cache, must-revalidate, post-check=0, pre-check=0');

     $pdf->Output();
     return sfView::NONE;
  }

}